lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
↳ QTRS
↳ Overlay + Local Confluence
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
HELP(x, c) → IF(lt(c, x), x, c)
LT(s(x), s(y)) → LT(x, y)
FAC(x) → HELP(x, 0)
HELP(x, c) → LT(c, x)
IF(true, x, c) → HELP(x, s(c))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
HELP(x, c) → IF(lt(c, x), x, c)
LT(s(x), s(y)) → LT(x, y)
FAC(x) → HELP(x, 0)
HELP(x, c) → LT(c, x)
IF(true, x, c) → HELP(x, s(c))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LT(s(x), s(y)) → LT(x, y)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
HELP(x, c) → IF(lt(c, x), x, c)
IF(true, x, c) → HELP(x, s(c))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
fac(x) → help(x, 0)
help(x, c) → if(lt(c, x), x, c)
if(true, x, c) → times(s(c), help(x, s(c)))
if(false, x, c) → s(0)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
HELP(x, c) → IF(lt(c, x), x, c)
IF(true, x, c) → HELP(x, s(c))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
fac(x0)
help(x0, x1)
if(true, x0, x1)
if(false, x0, x1)
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
HELP(x, c) → IF(lt(c, x), x, c)
IF(true, x, c) → HELP(x, s(c))
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))
(1) (HELP(x2, s(x3))=HELP(x4, x5) ⇒ HELP(x4, x5)≥IF(lt(x5, x4), x4, x5))
(2) (HELP(x2, s(x3))≥IF(lt(s(x3), x2), x2, s(x3)))
(3) (IF(lt(x7, x6), x6, x7)=IF(true, x8, x9) ⇒ IF(true, x8, x9)≥HELP(x8, s(x9)))
(4) (lt(x7, x6)=true ⇒ IF(true, x6, x7)≥HELP(x6, s(x7)))
(5) (true=true ⇒ IF(true, s(x12), 0)≥HELP(s(x12), s(0)))
(6) (lt(x14, x15)=true∧(lt(x14, x15)=true ⇒ IF(true, x15, x14)≥HELP(x15, s(x14))) ⇒ IF(true, s(x15), s(x14))≥HELP(s(x15), s(s(x14))))
(7) (IF(true, s(x12), 0)≥HELP(s(x12), s(0)))
(8) (IF(true, x15, x14)≥HELP(x15, s(x14)) ⇒ IF(true, s(x15), s(x14))≥HELP(s(x15), s(s(x14))))
POL(0) = 0
POL(HELP(x1, x2)) = -1 + x1 - x2
POL(IF(x1, x2, x3)) = -1 - x1 + x2 - x3
POL(c) = -2
POL(false) = 1
POL(lt(x1, x2)) = 0
POL(s(x1)) = 1 + x1
POL(true) = 0
The following pairs are in Pbound:
IF(true, x, c) → HELP(x, s(c))
The following rules are usable:
IF(true, x, c) → HELP(x, s(c))
false → lt(x, 0)
lt(x, y) → lt(s(x), s(y))
true → lt(0, s(x))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ DependencyGraphProof
HELP(x, c) → IF(lt(c, x), x, c)
lt(0, s(x)) → true
lt(x, 0) → false
lt(s(x), s(y)) → lt(x, y)
lt(0, s(x0))
lt(x0, 0)
lt(s(x0), s(x1))